home *** CD-ROM | disk | FTP | other *** search
- /*
- ------------------------------------------------------------------------------
- | Sun Microsystems, TOPS Division
- | 950 Marina Village Parkway
- | P.O. Box 4016
- | Alameda, CA 94501
- |
- | Copyright (c) 1989 Sun Microsystems, Inc. All rights reserved.
- |
- | Sun considers its source code as an unpublished, proprietary trade secret,
- | and it is available only under strict license provisions. This copyright
- | notice is placed here only to protect Sun in the event the source is deemed
- | a published work. Disassembly, decompilation, or other means of reducing the
- | object code to human readable form is prohibited by the license agreement
- | under which this code is provided to the user or company in possession of
- | this copy.
- |
- | RESTRICTED RIGHTS LEGEND: Use, duplication, or disclosure by the Government
- | is subject to restrictions as set forth in subparagraph (c) (1) (ii) of the
- | Rights in Technical Data and Computer Software clause at DFARS 52.227-7013
- | and in similar clauses in the FAR and NASA FAR supplement.
- ------------------------------------------------------------------------------
- */
-
-
-
-
- /*
-
- IMPLEMENTATION CSTServerApp
-
- */
-
- #include "CSTServerApp.h"
- #include "STServer.h"
- #include "SetSelfSend.h"
-
-
- /*** constants ***/
- #define kNumLines (25)
- #define kWindowWidth (400)
- #define kTop (50)
- #define kLeft (10)
-
- /* menu stuff */
- #define iClearWindow (1)
- #define iDebugger (2)
- #define iQuit (4)
-
- #define mServer (mEdit+1)
- #define iCreateServer (1)
- #define iDestroyServer (2)
-
- /* cmd numbers */
- #define cClearWindow (1000)
- #define cCreateServer (1001)
- #define cDestroyServer (1002)
- #define cDebugger (1003)
-
-
-
- /*** METHODS for CSTServerApp ***/
- void CSTServerApp::ISTServerApp(void) {
- this->IApplication('????');
- this->CreateWindow();
- if (SetSelfSend() != noErr) {
- SysBeep(1);
- ExitToShell();
- }
- fServerIsOpen = FALSE;
- }
-
- void CSTServerApp::MainEventLoop(void) {
- STServerTrigger();
- inherited::MainEventLoop();
- }
-
- void CSTServerApp::CreateWindow(void) {
- Point p;
- CWriteLnWindow* w;
-
- p.h = kLeft;
- p.v = kTop;
- w = new(CWriteLnWindow);
- w->IWriteLnWindow((unsigned char *)"\pServer Window", kNumLines, kWindowWidth, p);
- fWindow = w;
- }
-
- void CSTServerApp::DoIdle(EventRecord* e) {
- /*
- static INT32 idleCount = 0;
- Str255 msg;
-
- idleCount++;
- NumToString(idleCount,msg);
- fWindow->WriteLn(msg);
- fWindow->NewLine();
- */
- }
-
-
- void CSTServerApp::CreateServer(void) {
- INT32 err;
- Str255 msg;
-
- if (fServerIsOpen) {
- SysBeep(1);
- return;
- }
-
- STServerCreate();
- fServerIsOpen = TRUE;
- }
-
-
- void CSTServerApp::DestroyServer(void) {
- if (!fServerIsOpen) {
- SysBeep(1);
- return;
- }
-
- STServerDispose();
- fServerIsOpen = FALSE;
- }
-
-
- void CSTServerApp::Msg(Str255 msg) {
- fWindow->WriteLn(msg);
- }
-
- void CSTServerApp::NewLine(void) {
- fWindow->NewLine();
- }
-
-
-
-
- void CSTServerApp::CreateMenus(void) {
- char appleString[2];
- appleString[0] = 0x1;
- appleString[1] = appleMark;
- fAppleMenu = NewMenu(mApple, appleString);
- AppendMenu(fAppleMenu, "\pAbout Server...;(-");
- AddResMenu(fAppleMenu, 'DRVR');
- InsertMenu(fAppleMenu, 0);
-
- fFileMenu = NewMenu(mFile, "\pFile");
- AppendMenu(fFileMenu, "\pClear Window/W;Debugger/M;(-;Quit/Q");
- InsertMenu(fFileMenu, 0);
-
- fEditMenu = NewMenu(mEdit, "\pEdit");
- AppendMenu(fEditMenu, "\pCut/X;Copy/C;Paste/V");
- InsertMenu(fEditMenu, 0);
-
- fServerMenu = NewMenu(mServer, "\pServer");
- AppendMenu(fServerMenu, "\pOpen/C;Close/D");
- InsertMenu(fServerMenu, 0);
-
- DrawMenuBar();
- }
-
-
- INT16 CSTServerApp::MenuSelectionToCmd(INT16 menu, INT16 item) {
- INT16 returnValue = cNoCmd;
-
- switch (menu) {
- case mFile:
- switch(item) {
- case iClearWindow:
- returnValue = cClearWindow;
- break;
-
- case iDebugger:
- returnValue = cDebugger;
- break;
-
- case iQuit:
- returnValue = cQuit;
- break;
- }
- break;
-
- case mServer:
- switch(item) {
- case iCreateServer:
- returnValue = cCreateServer;
- break;
-
- case iDestroyServer:
- returnValue = cDestroyServer;
- break;
- }
- break;
-
- default:
- returnValue = inherited::MenuSelectionToCmd(menu,item);
- }
-
- return(returnValue);
- }
-
-
- void CSTServerApp::DoMenuCmd(INT16 cmd) {
- switch (cmd) {
- case cClearWindow:
- this->DoClear();
- break;
-
- case cDebugger:
- this->DoDebugger();
- break;
-
- case cCreateServer:
- this->DoCreateServer();
- break;
-
- case cDestroyServer:
- this->DoDestroyServer();
- break;
-
- default:
- inherited::DoMenuCmd(cmd);
- break;
- }
- }
-
-
- /** menu actions **/
- void CSTServerApp::Quit(void) {
- this->DoDestroyServer();
- inherited::Quit();
- }
-
- void CSTServerApp::DoDebugger(void) {
- Debugger();
- }
-
- void CSTServerApp::DoClear(void) {
- fWindow->ClearContents();
- fWindow->Invalidate();
- }
-
- void CSTServerApp::DoCreateServer(void) {
- this->CreateServer();
- }
-
- void CSTServerApp::DoDestroyServer(void) {
- this->DestroyServer();
- }
-
-
-